/**
 * @ngController SomeController
 * @implements {angular.IController}
 */
class SomeController {
  counter = 0;
  static $inject = ["SomeService"];
  /**
   * @param {import('./service.js')} SomeService
   */
  constructor(SomeService) {
    this.SomeService = SomeService;
  }
  $onInit() {
    this.SomeService.$load(this);
    console.log("SomeController initialized");
  }
  $onDestroy() {
    this.SomeService.$dispose();
    console.log("SomeController destroyed");
  }
  $doCheck() {
    console.log("SomeController checked");
  }
  $onChanges(changes) {
    console.log("SomeController changes", changes);
  }
  $postLink() {
    // console.log("SomeController linked");
  }
}

/**
 * @param {ng.IModule} module 
 * @returns {void}
 */
export default function SomeControllerLoader(module) {
  return void module.controller(
    SomeController.name,
    SomeController
  );
}
